package Leetcode.树.HAFUMAN;

/**
 * Huffman树的测试程序
 */

public class HuffmanTest {

    private static final int a[]= {5,6,8,7,15};
    /*
    将w1、w2、…，wn看成是有n 棵树的森林(每棵树仅有一个结点)；
    在森林中选出根结点的权值最小的两棵树进行合并，作为一棵新树的左、右子树，且新树的根结点权值为其左、右子树根结点权值之和；
    从森林中删除选取的两棵树，并将新树加入森林；
    重复(02)、(03)步，直到森林中只剩一棵树为止，该树即为所求得的哈夫曼树。
     */

    public static void main(String[] args) {
        int i;
        Huffman tree;

        System.out.print("== 添加数组: ");
        for(i=0; i<a.length; i++) 
            System.out.print(a[i]+" ");

        // 创建数组a对应的Huffman树
        tree = new Huffman(a);

        System.out.print("\n== 前序遍历: ");
        tree.preOrder();

        System.out.print("\n== 中序遍历: ");
        tree.inOrder();

        System.out.print("\n== 后序遍历: ");
        tree.postOrder();
        System.out.println();

        System.out.println("== 树的详细信息: ");
        tree.print();

        // 销毁二叉树
        tree.destroy();
    }
}